﻿/*****************************************************************//**
 *
 * @file   FITKAbaqusAbstractAdaptor.h
 * @brief  抽象的Abaqus文件读写适配器
 * @author fulipeng (flipengqd@yeah.net)
 * @date   2024-03-15
 *
 *********************************************************************/
#ifndef _FITKABAQUSABSTRACTADAPTOR_R_H__
#define _FITKABAQUSABSTRACTADAPTOR_R_H__

#include "FITKAbaqusIOINPAPI.h"
#include "FITK_Kernel/FITKAdaptor/FITKAbstractIOAdaptor.h"

namespace IO
{
    class FITKAbaqusINPReader;
    class FITKAbaqusINPWriter;

    /**
     * @brief 抽象的Abaqus文件读写适配器
     * @author fulipeng (fulipengqd@yeah.net)
     * @date 2024-03-15
     */
    class FITKAbaqusIOINPAPI FITKAbaqusAbstractAdaptor : public Adaptor::FITKAbstractIOAdaptor
    {
        FITKCLASS(IO, FITKAbaqusAbstractAdaptor);

    public:
        explicit FITKAbaqusAbstractAdaptor() = default;
        virtual ~FITKAbaqusAbstractAdaptor() = 0;

        /**
         * @brief 设置INP文件读取器
         * @param reader INP读取类
         * @author fulipeng (fulipengqd@yeah.net)
         * @date 2024-03-15
         */
        void setFileReader(FITKAbaqusINPReader* reader);
        /**
         * @brief 设置INP文件写出器
         * @param writer INP写出类
         * @author fulipeng (fulipengqd@yeah.net)
         * @date 2024-03-15
         */
        void setFileWriter(FITKAbaqusINPWriter* writer);

    protected:
        /**
         * @brief INP文件读取器
         * @author fulipeng (fulipengqd@yeah.net)
         * @date 2024-03-15
         */
        FITKAbaqusINPReader* _reader{};

        /**
         * @brief INP文件写出器
         * @author fulipeng (fulipengqd@yeah.net)
         * @date 2024-03-15
         */
        FITKAbaqusINPWriter* _writer{};

    };
}


#endif
